const fs = require('fs');
const { resolve } = require('path');
const path = require('path')

// callback 方式获取一个文件的内容
// function getFileContent(fileName, callback) {
//   let fullName = path.resolve(__dirname, 'files', fileName);
//   fs.readFile(fullName, (err, data)=>{
//     if (err) {
//       console.log(err);
//       return
//     }
//     callback(JSON.parse(data));
//   })
// }

// getFileContent('a.json', (aData)=>{
//   console.log('a data', aData)
//   getFileContent(aData.next, bData=>{
//     console.log('b data', bData)
//     getFileContent(bData.next, cData=>{
//       console.log('c data', cData)
      
//     })
//   })
// })



// 用 promise 获取文件内容
function getFileContentPromise(fileName) {
  let promise = new Promise((resolve, reject)=>{
    let fullName = path.resolve(__dirname, 'files', fileName);
    fs.readFile(fullName, (err, data)=>{
      if (err) {
        reject(err);
        return
      }
      resolve(JSON.parse(data));
    })
  })
  return promise;
}

// getFileContentPromise('a.json').then(aData=>{
//   console.log('a data', aData);
//   return getFileContentPromise(aData.next)
// }).then(bData=>{
//   console.log('b data', bData);
//   return getFileContentPromise(bData.next)
// }).then(cData=>{
//   console.log('c data', cData)
// })


// async await
async function readFileContent() {
  let aData = await getFileContentPromise('a.json');
  console.log('a data', aData);
  let bData = await getFileContentPromise(aData.next);
  console.log('b data', bData);
  let cData = await getFileContentPromise(bData.next);
  console.log('c data', cData)
}

readFileContent();